package com.tramy.data.export.conf;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;

import javax.sql.DataSource;
import java.sql.SQLException;

/**
 * Created by honway on 2016/11/7.
 * 这里只配置了多个数据源,这个要先于mybatis处理完成
 * 这个顺序是在入口类中使用@Import注解来做的.
 * 写在注解前面的类,会被优先处理掉.
 * 这里用了@ConfigurationProperties注解.这个会自动把配置里
 * 相关的对应创建的bean里属性的值设置进去.
 * 但是设置这个工作,是在实例化完之后,才设置进去的
 * 也就是说先有了一个DruidDataSource实例.但是url什么的,都是空的
 * 如果把这个跟mybatis的配置合并,会导致循环依赖.一个空的dataSource
 * mybatis里又依赖这个DataSource.
 */
public class DataSourceConfig {
    @ConfigurationProperties(prefix="spring.datasource.firehome")
    @Bean(initMethod="init",destroyMethod="close")
    public DataSource firehomeDataSource() throws SQLException {
        return new DruidDataSource();
    }

    @ConfigurationProperties(prefix="spring.datasource.newTramy")
    @Bean(initMethod="init",destroyMethod="close")
    public DataSource newTramyDataSource() throws SQLException {
        return new DruidDataSource();
    }

    @ConfigurationProperties(prefix="spring.datasource.tramygs")
    @Bean(initMethod="init",destroyMethod="close")
    public DataSource tramygsDataSource() throws SQLException {
        return new DruidDataSource();
    }
}
